#pragma once
#include "Globals.h"
//#include "Manifestation.h"
/**
*	This is the player class. It handles all of the logic of the pathogen and its interaction with the world.
*/

const int MaxManifests	= 20;	//We only want the player to have X manifestations to choose from.
const int Index			= 200;	//Arbitrary number to make searching through our .txt easier.	

struct Manifestation
{

	//=====VARIABLES
	string		m_sName;				//The name of the manifestation
	string		m_sDesc;				//Text description of the manifestation
	int			m_iVirulenceMod;		//How much the manifestation modifies virulence
	int			m_iLethalityMod;		//How much the manifestation modifies lethality
	int			m_iVisibilityMod;		//How much the manifestation modifies visibility
	int			m_iMutationCost;		//How much the mutation costs to buy
	int			m_iMutationSell;		//How much the mutation sells for
	int			m_iRiotChanceMod;		//The likelihood that the Manifestation will cause a riot
	void SetValues(string Name, string Desc,int Vir, int Leth, int Vis, int Cost, int Sell, int Riot)
	{
		m_iVirulenceMod = Vir;
		m_iLethalityMod = Leth;
		m_iVisibilityMod = Vis;
		m_iMutationCost = Cost;
		m_iMutationSell = Sell;
		m_iRiotChanceMod = Riot;
		m_sName = Name;
		m_sDesc = Desc;
	}

};
class Pathogen 
{
private:
	string	m_sName;

	int		m_iVirulence;					//Percentage chance of the disease passing on.
	int		m_iLethality;					//Percentage chance of the disease causing death.
	int		m_iVisibility;					//Percentage chance of the disease being noticed per day.
	int		m_iRiotChance;					//Percentage chance of the disease causing a riot.
	int		m_iMutationPoints;				//Points available for upgrading pathogen.
	bool	m_bMyManifests[MaxManifests];	//Which manifests the player has

public:
	Manifestation m_AllManifests[MaxManifests];

	Pathogen();
	inline static Pathogen* Into()      //Renderer to the power of singleton
	{
		static Pathogen Pathogen;
		return &Pathogen;
	}
	//=====INITIALIZATION
	void InitManifestations();
	//=====MUTATORS
	int  BuyManifest(int);
	void AddMutationPts(int x)
	{
		m_iMutationPoints+=x;
	}
	//=====ACCESSORS
	int CheckMutationPoints()	{return m_iMutationPoints;	};
	int iGetVir()				{return m_iVirulence;		};
	int CheckVisibility()		{return m_iVisibility;		};
	int CheckLethality()		{return m_iLethality;		};

};

